
#ifndef APP_ESSHAPES_H
#define APP_ESSHAPES_H

/**
 *  为立方体生成几何形状。为顶点数据分配内存并将结果保存在数组中。为GL_TRIANGLES生成索引列表
 *
 *  @param scale     立方体的大小，单位立方体为1.0
 *  @param vertices  如果不为NULL,则包含 float3 位置数组
 *  @param normals   如果不为NULL,则包含 float3 法线数组
 *  @param texCoords 如果不为NULL,则包含 float2 texCoords 数组
 *  @param indices   如果不为NULL,则包含三角形列表索引数组
 *
 *  @return 以GL_TRIANGLES形式渲染缓冲区所需的索引数量（如果索引数组不为NULL，则为其中保存的索引数量）
 */
int esGenCube ( float scale, float **vertices, float **normals,
                float **texCoords, unsigned int **indices );

/**
 *  为一个球体生成几何形状。为顶点数据分配内存并将结果保存在数组中。为GL_TRIANGLE_STRIP生成索引列表。
 *
 *  @param numSlices 球体中的垂直和水平切片数量
 *  @param radius    球体的半径
 *  @param vertices  如果不为NULL,则包含 float3 位置数组
 *  @param normals   如果不为NULL,则包含 float3 法线数组
 *  @param texCoords 如果不为NULL,则包含 float2 texCoords 数组
 *  @param indices   如果不为NULL,则包含三角形列表索引数组
 *
 *  @return 以GL_TRIANGLES形式渲染缓冲区所需的索引数量（如果索引数组不为NULL，则为其中保存的索引数量）
 */
int esGenSphere ( int numSlices, float radius, float **vertices, float **normals,
                  float **texCoords, unsigned int **indices );

/**
 *  生成由三角形组成的方格网。为顶点数据分配内存并将结果保存在数组中。为GL_TRIANGLES生成索引列表
 *
 *  @param size      方格网的大小(决定顶点的多少)
 *  @param vertices  如果不为NULL,则包含 float3 位置数组
 *  @param texCoords 如果不为NULL,则包含 float3 texCoords 数组
 *  @param indices   如果不为NULL,则包含三角形列表索引数组
 *
 *  @return 以GL_TRIANGLES形式渲染缓冲区所需的索引数量（如果索引数组不为NULL，则为其中保存的索引数量）
 */
int esGenSquareGrid ( int size, float **vertices, float **texCoords, unsigned int **indices );


#endif //APP_ESSHAPES_H
